file=open("test.txt", "w+",encoding="utf-8")

file.write("hello world\n") #写入文件
file.write("hello world2")
print(file)

file.seek(0) #移动文件指针到开头
str5=file.read(5) #读取5个字符
strall=file.read() #读取全部内容
print(str5)
print(strall)#读取全部内容,从文件指针位置开始，直到文件末尾，前面的read（5）已经将指针移到索引为5的位置
file.close() #关闭文件

#使用io建议搭配with语句，with语句会自动关闭文件，在with模块执行完后会自动关闭文件，释放资源
with open("test.txt", "r",encoding="utf-8") as file:
    strall=file.read()
    print(strall)
print("with语句执行完毕，自动关闭文件")

with open("test.txt") as file:
    print(file.readline()) #读取一行
    print(file.readlines()) #读取全部行，返回一个列表
    


#目录操作，需要引入os模块
import os
print(os.getcwd()) #获取当前工作目录
print(os.name) #获取操作系统类型,nt表示windows，posix表示linux/mac/unix
print(os.linesep) #获取当前操作系统的换行符
print(os.sep) #获取当前操作系统的路径分隔符
print(os.path.join("/usr/bin","test.txt")) #拼接路径，并不会检查路径是否存在
print(os.path.exists("/usr/bin/test.txt")) #检查路径是否存在
print(os.path.isfile("/usr/bin/test.txt")) #检查路径是否为文件
print(os.path.isdir("/usr/bin/test.txt")) #检查路径是否为目录
print(os.path.getsize("/usr/bin/test.txt")) #获取文件大小
print(os.path.abspath("test.txt")) #获取文件的绝对路径
print(os.path.split("/usr/bin/test.txt")) #分割路径，返回路径和文件名
print(os.path.splitext("/usr/bin/test.txt")) #分割路径，返回路径和文件扩展名
print(os.listdir("/usr/bin")) #列出目录下的文件和文件夹
os.mkdir("/usr/bin/test") #创建目录，如果目录已经存在，会报错，只能创建一个文件夹
print(os.makedirs("/usr/bin/test")) #创建目录，如果目录已经存在，会报错，可以创建多个文件夹
print(os.rmdir("/usr/bin/test")) #删除目录，如果目录不为空，会报错
print(os.remove("/usr/bin/test.txt")) #删除文件，如果文件不存在，会报错
print(os.rename("/usr/bin/test.txt","/usr/bin/test2.txt")) #重命名文件，如果文件不存在，会报错
print(os.path.basename("/usr/bin/test.txt")) #获取文件名
print(os.path.dirname("/usr/bin/test.txt")) #获取文件路径
print(os.path.splitext("/usr/bin/test.txt")) #获取文件扩展名
os.mkdir("/usr/bin/test") #创建目录，如果目录已经存在，会报错
print(os.stat("/usr/bin/test")) #获取文件信息

tuple=os.walk("/usr/bin") #遍历目录，返回一个生成器，每次返回一个元组，元组包含三个元素，分别是目录路径，目录下的文件列表，目录下的子目录列表
for i in tuple:
    print(i)
for root,dirs,files in tuple:
    print(root)
    print(dirs)
    print(files)

#如果文件夹既有文件又有文件夹，想像rm -rf /usr/bin/test一样，删除文件夹及其内容，可以使用shutil.rmtree("/usr/bin/test")
import shutil
shutil.rmtree("/usr/bin/test")